package com.tn.controller.alarm.common.model;

import com.tn.controller.alarm.common.constants.Constants;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.DigestUtils;

/**
 * @program: tn_aucy_java
 * @description:
 * @author: yangjiayao
 * @create: 2021-11-12 14:00
 */
@Getter
@Setter
@ToString
public class InputVO<T> {
    /**
     * orgID 默认
     */
    private String orgId = Constants.OtherSys.PRODUCE_SYS_ORGID;

    /**
     * 发送请求时的时间戳
     */
    private Long ts;

    /**
     * 发送请求时的时间戳
     */
    private String md;

    /**
     * 具体参数
     */
    private T data;

    /**
     * 无参构造
     */
    public InputVO() {
        super();
    }

    /**
     * 构造方法
     *
     * @param data 数据域
     */
    public InputVO(T data) {
        super();
        this.data = data;
    }

    /**
     * 按校验规则生成校验码
     */
    public String encodeMd() {
        return DigestUtils.md5DigestAsHex((orgId + ts + Constants.OtherSys.PRODUCE_SYS_KEY).getBytes());
    }

    /**
     * 校验认证信息是否匹配
     *
     * @return 校验结果
     */
    public boolean checkMd() {
        return StringUtils.isNotBlank(getMd()) && getMd().equals(encodeMd());
    }
}
